﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Chapter09
{
    /// <summary>
    /// 第9章 定义类
    /// </summary>
    public class Program
    {
        public static void Main(string[] args)
        {
            #region 01 C# 中的类定义
            /*
             * 类只能继承一个基类
             * 类定义可以使用的访问修饰符
             * 无 (默认值) 或 internal 内部
             * public 公共
             * abstract 或 internal abstract 抽象或内部抽象
             * public abstract 公共抽象
             * sealed 或 internal sealed 密封或内部密封
             * public sealed 公共密封
             * System.Object是所有类的根
             * 接口的定义
             * 接口可以继承多个基接口
             * 接口定义可以使用的访问修饰符
             * 无 (默认值) 或 internal 内部 
             * public 公共
             * */
            Code01.Example01.Demo.Begin();
            #endregion

            #region 02 System.Object
            /*
             * Object()
             * ~Object() 或 Finalize()
             * public virtual bool Equals(object obj)
             * public static bool Equals(object objA, object objB)
             * public static bool ReferenceEquals(object objA, object objB)
             * public virtual string ToString()
             * protected object MemberwiseClone()
             * public Type GetType()
             * public virtual int GetHashCode()
             * */
            Code02.Demo.Begin();
            #endregion

            #region 03 构造函数和析构函数
            /*
             * 构造函数的执行序列
             * */
            Code03.Demo.Begin();
            #endregion

            #region 04 Visual Studio 中的 OOP 工具
            /*
             * 01 Class View 类视图窗口
             * 01.01 图标的含义
             * 02 对象浏览器
             * 03 添加类
             * 04 类图
             * */
            Code04.Demo.Begin();
            #endregion

            #region 05 类库文件
            Code05.Example02.Demo.Begin();
            #endregion

            #region 06 接口和抽象类
            #endregion

            #region 07 结构类型
            Code07.Example03.Demo.Begin();
            #endregion

            #region 08 浅度和深度复制
            /*
             * 如果要深度复制，最好自己实现IConeable接口的Clone()方法
             * */
            #endregion

            #region 09 小结
            #endregion

            #region 10 练习
            Code10.Demo.Begin();
            #endregion

            #region 11 本章要点
            #endregion
        }
    }
}
